package com.cz.video.common.annotation;


import java.lang.annotation.*;


/**
 * 用于校验参数中内容是否 合法
 * @apiNote 使用时如果是insert，并且 {@link LegalValidate#isRecord()} 为true，一定要在插入后把id 设置到bo中
 * <br/>在需要校验合法性的字段上面加一个{@link LegalContent}注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LegalValidate {

    /**
     * 需要校验的参数的下标
     * <p>为空时默认校验所有参数</p>
     */
    int[] value() default {};

    /**
     * 是否设置违禁状态
     * <p>当内容非法时将status为禁言状态</p>
     */
    boolean isSetStatus() default true;

    /**
     * 当内容非法时 是否抛出异常
     */
    boolean isThrowException() default true;

    /**
     * 当内容 非法时是否记录异常日志
     * @return
     */
    boolean isRecord() default true;

    /**
     * 在检查到违禁词时是否允许继续执行 被aop增强的方法
     * <p>如果为false，则不进入到 aop方法中<p/>
     */
    boolean isAllowInvoke() default false;
}
